perm filename STOYAN[F81,JMC] blob
sn#622599 filedate 1981-11-12 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 stoyan[f81,jmc] comments on 1st part of Stoyan's translation
C00015 00003 Comments on third part
C00018 ENDMK
C⊗;
stoyan[f81,jmc] comments on 1st part of Stoyan's translation
LISP and IPL
I got the idea of list structure, the free storage list and
recursive programs from IPL. While there are perhaps other correspondences
between LISP and IPL, I never used IPL and I don't think I ever had
the manual. Abrahams's statemnt is therefore misleading.
I believe there was a very restricted kind of function statement
in Fortran 1. It allowed single formulas like
ROOT1(A,B,C) = (-2.0*B+SQRT(B**2-4.0*A*C))/(2.0*A)
to be placed at the beginning of a program and subsequently used.
This was convenient in my chess program, but its uses were very
limited and one of the motivations for inventing conditional
expressions was to improve such statements. As I recall, the
FUNCTION definition facilities in Fortran 2 allowed arbitrary
programs and wouldn't have suggested quite so imperatively the
need for conditional expressions.
It doesn't seem to me to be quite correct to say that IBM
was interested in artificial intelligence. Rochester, who at that
time was head of something called the Information Research Department,
had taken part in the 1956 Dartmouth study and had been one of the
organizers. Starting work in artificial intelligence, and in geometry
in particular, was within his discretion as head of that department.
I don't know whether the matter was even discussed at any higher
level in IBM.
The X prefix on the Fortran functions was required, because
Fortran would have complained about the functions not taking
integer values otherwise or would have converted the output to
floating point or something like that.
Your readers might suppose that there was a close connection
between Lincoln Laboratory and the M.I.T. Computation Center. Lincoln
Laboratory is in the town of Lincoln about 15 miles from M.I.T., and
much of its work was classified at that time. Anyway, while M.I.T.
professors and graduate students often worked part time at Lincoln
Laboratory, there was little joint work. The New England Computation
Center was set up at IBM's initiative, and Lincoln Laboratory was
not involved. P.M. Morse was Professor of Physics.
I don't know what the statement "Research was done mainly
at the Research Laboratory of Electronics" refers to. Research
was done all over M.I.T. At first I was a visitor at the
M.I.T. Computation Center and had limited contact with R.L.E.
My contact increased when Wiesner agreed to support the M.I.T.
Artificial Intellgence Project and to let students supported
by R.L.E. work in it.
The part about conditional expressions is mainly correct,
but using the English syntax wasn't Backus's idea; it was
part of the previously established rules of the committee that
everything that wasn't a standard notation be spelled out in
English. Backus proposed the specific notation that was used, i.e.
IF p THEN a ELSE b
instead of (p→a,b). The issue wasn't important.
I was hired by the Electrical Engineering Department
as Assistant Professor of Communication Sciences. While Wiesner
may have been involved in the decision, I don't recall who was
actually Chairman of that Department. It seems to me that Morse,
who was actually Professor of Physics, recommended it, and that
maybe Peter Elias was involved, but he may not have become
important till later.
I don't think our first secretary was Boston Irish. I
think our first secretary was Marcia Webber, who was Jewish
and the wife of a graduate student in Electrical Engineering.
A few years later, her husband was working for the CIA, came
to see me asking about the state of AI research, confessing
that he was now the CIA's expert in artificial intelligence.
It seemed to me fitting that the CIA should have as its expert
in AI someone whose contact with the subject at M.I.T. had
mainly been to have his wife working as the group's secretary.
However, it's possible that there was a secretary before
Marcia Webber. If so, she didn't stay long.
By the way, this seems to me to be irrelevant to the
history of LISP. Perhaps you should consider removing much
auxiliary material about time-sharing, AI, MTC and my personal
history. It may be more trouble to get it right than it's worth.
I'm not sure the proposed LISP subroutines were based
on Fortran. Fortran didn't have subroutines till Fortran 2.
If Fortran 2 was announced in Fall 1958, then you're right.
Otherwise, it's just a case of parallel evolution.
The design you mention on p. H16 wasn't done during the
summer. It was probably done in early September and was
definitely a rush job. At least the writing was done in
september.
H17 - Using λ-notation was my own idea. While I hadn't read
Church and didn't know that λ-notation was enough to define recursion, I
had looked at the book far enough to understand λ-notation itself. While
it might have been hoped that my theoretically minded friends would have
suggested useful mechanisms from logic, my experience has been different.
The theoretically minded often either ignore their theory completely or
try to adopt a theoretically-based system entirely. People often keep
ideas that are really related in separate mental compartments.
"The programmers were ordered ..." reads untactfully to
Americans. In fact I did some of it myself, i.e. the PRINT program.
The Cambridge Polish notation was (as I recall) in honor of
Quine who adapted the Lukasiewicz notation by adding parentheses, i.e.
it turned out that the notation we invented was just about exactly
Quine's variant.
While we didn't get our public pushdown list from the Algol
people, I don't think they got it from us. The two groups used
entirely different terminology. Also the purposes were somewhat
different; we wanted recursion while the Algol implementers wanted
to re-use registers in very small computers after leaving a block.
H31 - The main history up to this point seems correct, and it
is clear that I subsequently forgot many of the intermediate stages
in the development of LISP. It is suggested on this page that
perhaps some people coded LISP in machine language from other
people M-expressions. I don't think this happened. The programmers
did their own coding.
H37 - I believe a "space thief" in IPL occurred when structure
was abandoned without being erased. Since there was no garbage
collector, such structure would never be accessed, and its only
symptom would be that the already too small memory would seem
even smaller. In the next paragraphs you quote me as using the
term "space thief" in this way.
H53 - I think Abrahams has a bad memory. I am quite sure
that Minsky and I didn't share an office; he was in the math department,
and my office wasn't adjacent to the group. For a while my office
was on the second floor; the group was in the basement, but I may
have abandoned the second floor office and moved in with the group.
You should ask someone else about this.
H55 - I think the name LISP 1.5 was used, because we had had
a more ambitious LISP 2 in mind.
I see you note this fact on page H58; the earlier reference is
confusing.
H58 - I don't understand about the compiler requiring 170000
words of storage. There weren't that many in the machine. Did it
run in passes?
The parts of the paper that are based on the documents are
excellent. As noted above, the anecdotal parts have many mistakes.
Also the English is entirely inadequate, and I'm not sure Fran's
corrections are sufficient, because she does'nt understand the
terminology. I suggest you get some other help there.
Comments on third part
Here are the answers to your questions:
I don't remember much about the relations among the various
simplifiers.
Abrahams did his proof-checker as my thesis student. However,
I don't remember whether he saw a draft of my paper. Weiher's
proof checker was at my instigation. My own proof-checker was for
resolution logic - not because I considered it a good logic to use
but because it was trivial to write. The trouble with all these
efforts, and Diffie's proof-checker also, was that none of the writers
knew very much about logic. The recent FOL by Richard Weyhrauch
and EKL by Jussi Ketonen are both written by logicians and are
actually usable for interactively proving program properties and
mathematical theorems.
I'll ask Feigenbaum to write you, but he's very busy.
I have little memory of the history of the LISP 2 effort,
and no comments on your account of its history.
However, I have the opinion that the LISP 2 project failed for
the following reasons:
1. The Q-32 computer had too small a memory for such a big
system. The PDP-6 and later the PDP-10 should have been chosen.
2. It became a piece of committee work, and as is usual
in such cases, people got along with each other by accepting
each other's elaborations of the ideas.
3. The final specifications were too elaborate.
4. The different groups didn't get along.
5. With all that, the project might have produced something
that could have replaced LISP 1.5 if ARPA hadn't given up too
soon. They thought they had spent too much money, but I would
guess that it was very much less than they have subsequently
put into patching various LISP implementations.
I'll see what I can do about at least the Stanford reports.